Maven হল একটি জনপ্রিয় বিল্ড অটোমেশন টুল যা Java প্রকল্পের জন্য ব্যবহৃত হয়। Maven স্বয়ংক্রিয়ভাবে ইউনিট টেস্ট চালানোর জন্য Surefire Plugin প্রদান করে। Surefire Plugin Maven-এ ইউনিট টেস্ট রান করার জন্য একটি গুরুত্বপূর্ণ টুল। এটি JUnit এবং TestNG টেস্ট ফ্রেমওয়ার্কের সাথে কাজ করে এবং টেস্ট ফলাফল রিপোর্ট তৈরি করে।
Maven Surefire Plugin এর ভূমিকা
Surefire Plugin হল Maven-এর একটি প্লাগইন যা প্রকল্পের unit tests চালাতে ব্যবহৃত হয়। এই প্লাগইনটি টেস্ট ফাইলগুলি কম্পাইল এবং রান করতে সাহায্য করে এবং টেস্ট ফলাফল সংরক্ষণ করে। এটি মাভেন প্রজেক্টের জন্য টেস্ট অটোমেশন, বিল্ড এবং টেস্ট সাইকেল সহজ এবং কার্যকরী করে তোলে।
Surefire Plugin এর সুবিধাসমূহ
- Test Automation: Maven সিঙ্ক্রোনাসভাবে এবং অটোমেটিক্যালি টেস্ট রান করতে পারে।
- JUnit & TestNG Support: এটি JUnit এবং TestNG উভয় টেস্ট ফ্রেমওয়ার্কের সাথে কাজ করে।
- Parallel Testing: এটি একাধিক টেস্টকে পাশাপাশি চালানোর ক্ষমতা প্রদান করে।
- Reports: টেস্ট রান করার পর আপনি একটি ডিটেইলড রিপোর্ট দেখতে পারেন যা সফল এবং ব্যর্থ টেস্টের সংখ্যা প্রদর্শন করে।
- Integration with CI Tools: এটি Jenkins বা অন্যান্য CI/CD টুলসের সাথে ইন্টিগ্রেট করা যায়, যা টেস্টিং প্রক্রিয়া অটোমেট করে।
১. Maven Surefire Plugin কনফিগারেশন
Maven প্রজেক্টে Surefire Plugin কনফিগার করার জন্য আপনাকে pom.xml ফাইলে এই প্লাগইনটি যোগ করতে হবে। নিচে একটি সাধারণ কনফিগারেশন দেওয়া হলো:
উদাহরণ: pom.xml এ Surefire Plugin কনফিগারেশন
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<includes>
<include>**/Test*.java</include> <!-- Test classes to include -->
</includes>
<testFailureIgnore>false</testFailureIgnore> <!-- Stop on failure -->
</configuration>
</plugin>
</plugins>
</build>
এখানে, maven-surefire-plugin এর ভার্সন ২.২২.২ নির্দিষ্ট করা হয়েছে। এই কনফিগারেশনে আপনি টেস্ট ক্লাসের প্যাটার্ন উল্লেখ করতে পারেন, যেমন এখানে **/Test*.java প্রতিটি টেস্ট ক্লাসের জন্য প্রযোজ্য হবে, যেগুলি Test দ্বারা শুরু হয়।
Configuration Explanation:
- version:
maven-surefire-pluginএর নির্দিষ্ট ভার্সন। - includes: টেস্ট ক্লাসের নামের প্যাটার্ন, যা প্লাগইনটি রান করবে।
- testFailureIgnore: যদি কোনও টেস্ট ব্যর্থ হয়, তাহলে বিল্ড থামবে কি না তা নির্ধারণ করে। যদি
falseহয়, তবে বিল্ড থেমে যাবে।
২. Surefire Plugin ব্যবহার করে Unit Test রান করা
একবার প্লাগইন কনফিগার করা হলে, আপনি Maven কমান্ড ব্যবহার করে আপনার প্রজেক্টে টেস্ট রান করতে পারেন।
উদাহরণ: Maven কমান্ড দিয়ে ইউনিট টেস্ট রান করা
Unit Test চালানো:
mvn testএই কমান্ডটি সমস্ত টেস্ট ক্লাস রান করবে এবং টেস্ট ফলাফল আপনাকে প্রদর্শন করবে।
- Test Results:
- টেস্ট সফল হলে, মেসেজে
"BUILD SUCCESS"দেখাবে। - যদি কোনও টেস্ট ব্যর্থ হয়, তাহলে
"BUILD FAILURE"এবং ব্যর্থ টেস্টের বিস্তারিত তথ্য থাকবে।
- টেস্ট সফল হলে, মেসেজে
Example Output:
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.example.MyAppTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.023 sec - in com.example.MyAppTest
Results:
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.023 sec
এখানে, 3টি টেস্ট রান হয়েছে এবং সবগুলো সফলভাবে সম্পন্ন হয়েছে।
৩. JUnit 5 এবং Surefire Plugin
Maven Surefire Plugin JUnit 5 টেস্ট ফ্রেমওয়ার্কের সমর্থনও প্রদান করে। JUnit 5 এর মাধ্যমে আপনি আরও উন্নত টেস্ট ফিচার ব্যবহার করতে পারেন, যেমন Dynamic Tests, Parameterized Tests, এবং Nested Tests।
উদাহরণ: JUnit 5 এর টেস্ট ক্লাস
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class MyTest {
@Test
public void testAddition() {
assertEquals(5, 2 + 3);
}
@Test
public void testSubtraction() {
assertEquals(3, 5 - 2);
}
}
Maven Command for JUnit 5:
JUnit 5 এর সাথে Maven ব্যবহার করতে, Surefire Plugin এর সর্বশেষ ভার্সন নিশ্চিত করুন এবং নিচের কমান্ডটি ব্যবহার করুন:
mvn clean test
৪. Test Reports and Surefire Plugin
Surefire Plugin আপনাকে টেস্ট রান করার পর একটি ডিটেইলড রিপোর্ট তৈরি করতে সাহায্য করে। সাধারণত, এই রিপোর্টটি target/surefire-reports/ ডিরেক্টরিতে সংরক্ষিত হয়।
উদাহরণ: Test Report ফাইল
===============================================
Test set: com.example.MyTest
-------------------------------------------------
Test run finished after 23 ms
-------------------------------------------------
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.023 sec - in com.example.MyTest
-------------------------------------------------
এই রিপোর্টটি আপনাকে মেটাডেটা, ব্যর্থ টেস্ট এবং সামগ্রিক টেস্ট ফলাফল দেখাবে।
৫. Parallel Testing with Surefire Plugin
Surefire Plugin একটি উন্নত ফিচার প্রদান করে যা একাধিক টেস্ট ক্লাস বা মেথড সমান্তরালভাবে (parallel) চালানোর সক্ষমতা রাখে। এর মাধ্যমে আপনি performance বৃদ্ধি করতে পারেন, বিশেষত যদি আপনার টেস্টের সংখ্যা বেশি হয়।
উদাহরণ: Parallel Testing কনফিগারেশন
<configuration>
<parallel>methods</parallel> <!-- Run tests in parallel at method level -->
<threadCount>4</threadCount> <!-- Number of threads to use -->
</configuration>
এখানে, methods অনুযায়ী টেস্ট সমান্তরালভাবে রান হবে এবং একযোগে চারটি থ্রেড ব্যবহার করা হবে।
উপসংহার
Maven Surefire Plugin হল একটি অত্যন্ত কার্যকরী টুল যা Maven প্রজেক্টে ইউনিট টেস্ট অটোমেশন এবং রিপোর্টিং সুবিধা প্রদান করে। এটি JUnit এবং TestNG এর মতো জনপ্রিয় টেস্ট ফ্রেমওয়ার্কের সাথে কাজ করে এবং সহজে টেস্ট রান, রিপোর্ট এবং ফলাফল দেখানো যায়। Parallel testing, JUnit 5 support, এবং detailed test reports এর মাধ্যমে এটি টেস্টিং প্রক্রিয়াকে আরও কার্যকরী করে তোলে।
Maven Surefire Plugin ব্যবহার করে আপনি কোডের সঠিকতা নিশ্চিত করতে পারেন, এবং ডেভেলপমেন্ট সাইকেলকে আরো দ্রুত ও সঠিকভাবে পরিচালনা করতে পারেন।
Read more